<?php
class Composition extends AppModel{
    public $useTable  = 'composition';
    public $lang_code = 'vn';
    
    public $validate = array(
        'title_vn' => array(
            'nonEmpty' => array(
                'rule' => array('notEmpty'),
                'message' => 'Nhập tên thành phần',
                'allowEmpty' => false
            ),
            'alphaNumericDashUnderscore' => array(
                'rule'    => array('alphaNumericDashUnderscore'),
                'message' => 'Tên thành phần không chứa ký tự đặc biệt'
            ),
        ),
        
        'title_en' => array(
            'nonEmpty' => array(
                'rule' => array('notEmpty'),
                'message' => 'Nhập tên thành phần',
                'allowEmpty' => false
            ),
            'alphaNumericDashUnderscore' => array(
                'rule'    => array('alphaNumericDashUnderscore'),
                'message' => 'Tên thành phần không chứa ký tự đặc biệt'
            ),
        ),
    );
    
    public function alphaNumericDashUnderscore($check) {
        // $data array is passed using the form field name as the key
        // have to extract the value to make the function generic
        $value = array_values($check);
        $value = $value[0];

        return preg_match('/^[a-zA-Z0-9_ \-]*$/', $value);
    }
    
    function add($data = array())
    {
        $this->create();
        $this->save($data);
		return $this->getLastInsertId();
    }
    
    function get_compo()
    {
        $lang_code = $this->lang_code;
        $sql = array(
            "conditions"=> array(
				"lang_code ="=> "$lang_code",
			),
			"order" => array('sort_order' => 'asc'),
			);
        $data = $this->find("all",$sql);
		return $data;
    }
    
    public function get_compo_by_id($compo_id = "", $lang = "")
    {
    	if($compo_id == "")
    		return null;
    	$lang_code = $this->lang_code;

    	$where_lang = "AND composition.lang_code = '$lang_code'";
    	if($lang == 'all')
    		$where_lang = "";

    	$sql = "SELECT * FROM composition WHERE compo_id = '$compo_id'";
    	$data = $this->query($sql);
        $result = array();
        foreach ($data as $value) {
			$lang_code = $value['composition']['lang_code'];
			$result[$lang_code] = $value['composition'];

		}
		return $result;
    }
    
    function update($compo_id = null, $lang_code = null, $data = array())
    {
		return $this->updateAll($data, array('compo_id' => $compo_id, 'lang_code' => $lang_code));
    }
    
    function get_compo_by_group($group = null)
    {
        $lang_code = $this->lang_code;
        $sql = array(
            "conditions"=> array(
                'group' => $group,
                'status' => 1,
			),
			"order" => array('sort_order' => 'asc'),
			);
        $data = $this->find("all",$sql);
        $result = array();
		foreach($data as $value)
        {
            $lang_code = $value['Composition']['lang_code'];
			$result[$lang_code][] = $value['Composition'];
        }
        return $result;
    }
    
    function del($compo_id = null)
    {
       $sql = "DELETE FROM composition WHERE compo_id = '$compo_id'";
   	    return $this->query($sql);
    }
    
    function change_status($compo_id = "")
    {
    	$sql = "SELECT * FROM composition WHERE compo_id = '$compo_id'";
        $data = $this->query($sql);
        if(!empty($data))
        {
            $status = $data[0]['composition']['status'];
            $change_status = $status == 1 ? '0' : '1';
            $sql = "UPDATE composition SET status = '$change_status' WHERE compo_id = '$compo_id'";
            $this->query($sql);
            return $change_status;
        }
        return -1;
    }
}